#ifndef _LOG_
#define _LOG_

#include<time.h>    //time;localtime;strftime;
#include<cstdio>    //fprintf;
#include<pthread.h> //pthread_self;

// 日志等级
#define INF 0
#define DBG 1
#define ERRR 2
#define LOG_LEVEL DBG

// 定义宏函数log
#define LOG(level, format, ...)do{\
        time_t t=time(nullptr);\
        struct tm *ltm=localtime(&t);\
        char tmp[32]= {0};\
        strftime(tmp, 31, "%H:%M:%S", ltm);\
        fprintf(stdout, "[%p %s %s:%d]" format "\n", (void*)pthread_self(), tmp, __FILE__, __LINE__, ##__VA_ARGS__);\
}while(0)
//__FILE__:宏定义，当前源文件名
// __LINE__:宏定义，当前行号
// %H:%M:%S：时间格式化参数，小时，分钟，秒
// format:作为一个字符串，在fprintf中与前后字符串拼接,需要空格隔开

// 定义日志函数
#define INF_LOG(format, ...) LOG(INF, format, ##__VA_ARGS__)
#define DBG_LOG(format, ...) LOG(DBG, format, ##__VA_ARGS__)
#define ERR_LOG(format, ...) LOG(ERRR, format, ##__VA_ARGS__)

#endif